package com.scy.java.io.buffered;

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

//将乱序出师表排列并复制到另一个文件中
public class TextSortCopy {
    public static void main(String[] args) {
        //1、定义一个缓冲字符输入流管道并与元文件接通
        try {
            BufferedReader bufferedReader=
                    new BufferedReader(
                            new FileReader("d:/出师表1.txt"));
            //5、定义一个缓冲字符输出流管道与目标文件接通
            BufferedWriter bufferedWriter =
                    new BufferedWriter(
                            new FileWriter("d:/copy_出师表1.txt"));
            //2、定义List集合存储读取的数据
            List<String> dataList = new ArrayList<>();
            //3、定义一个循环按照每行读取数据,存入到List集合中
            String line ;//记录每行读取的数据
            while ((line = bufferedReader.readLine()) != null){
                //将读取到的数据存入到List集中中
                dataList.add(line);
            }
            //4、对List中的每行数据按照首字符的编号升序排序
            //Collections集合工具类
            Collections.sort(dataList);
            //6、遍历集合中的每个元素,用字符输出流管道写出并换行
            for (String dataChar: dataList) {
                //用缓冲输出流写出数据并换行
                bufferedWriter.write(dataChar);
                bufferedWriter.newLine();
                //强制行刷新
                bufferedWriter.flush();
            }
            System.out.println("复制完毕");
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            e.printStackTrace();
        }//不用关流，会自动关闭

    }
}
